package com.zelix;

import java.io.*;
import java.util.ArrayList;

public abstract class kd
{

    static final String a[];
    static final String b[];
    static ux c;
    int d;
    public static int e;
    private static String z[] = {
        "//",
        "Error: unknown opcode="
        };

    kd(int i1)
    {
        d = -1;
        d = i1;
    }

    public abstract sn a(sn sn, boolean flag, boolean flag1, um um)
        throws ub, sb, wb;

    public abstract boolean b();

    public abstract boolean a(int i1, int j1);

    public boolean a(int i1)
    {
        return false;
    }

    public abstract boolean c();

    public boolean b(int i1)
    {
        return false;
    }

    public abstract void a(PrintWriter printwriter, StringBuffer stringbuffer, int i1)
        throws nb;

    public static kd c(int i1)
    {
        Object obj = null;
        switch(i1)
        {
        case 0: // '\0'
            obj = de.n(42);
            break;

        case 1: // '\001'
            obj = de.n(43);
            break;

        case 2: // '\002'
            obj = de.n(44);
            break;

        case 3: // '\003'
            obj = de.n(45);
            break;

        default:
            if(i1 <= 255)
            {
                obj = new vd(25, i1);
                break;
            }
            if(i1 <= 65535)
                obj = new fe(25, i1);
            break;
        }
        return ((kd) (obj));
    }

    public static kd d(int i1)
    {
        Object obj = null;
        switch(i1)
        {
        case 0: // '\0'
            obj = de.n(75);
            break;

        case 1: // '\001'
            obj = de.n(76);
            break;

        case 2: // '\002'
            obj = de.n(77);
            break;

        case 3: // '\003'
            obj = de.n(78);
            break;

        default:
            if(i1 <= 255)
            {
                obj = new vd(58, i1);
                break;
            }
            if(i1 <= 65535)
                obj = new fe(58, i1);
            break;
        }
        return ((kd) (obj));
    }

    static String e(int i1)
    {
        String s = b[i1];
        if(s != null)
            return z[0] + s;
        else
            return "";
    }

    public int b(int i1, int j1)
    {
        return j1;
    }

    public static kd c(int i1, int j1)
    {
        if(i1 <= 255)
            return new wd(i1, j1);
        else
            return new ge(i1, j1);
    }

    public static kd f(int i1)
    {
        Object obj = null;
        switch(i1)
        {
        case 0: // '\0'
            obj = de.n(26);
            break;

        case 1: // '\001'
            obj = de.n(27);
            break;

        case 2: // '\002'
            obj = de.n(28);
            break;

        case 3: // '\003'
            obj = de.n(29);
            break;

        default:
            if(i1 <= 255)
            {
                obj = new vd(21, i1);
                break;
            }
            if(i1 <= 65535)
                obj = new fe(21, i1);
            break;
        }
        return ((kd) (obj));
    }

    public static kd g(int i1)
    {
        Object obj = null;
        switch(i1)
        {
        case 0: // '\0'
            obj = de.n(59);
            break;

        case 1: // '\001'
            obj = de.n(60);
            break;

        case 2: // '\002'
            obj = de.n(61);
            break;

        case 3: // '\003'
            obj = de.n(62);
            break;

        default:
            if(i1 <= 255)
            {
                obj = new vd(54, i1);
                break;
            }
            if(i1 <= 65535)
                obj = new fe(54, i1);
            break;
        }
        return ((kd) (obj));
    }

    public static kd a(jb jb, int i1, qy qy, nm nm)
        throws IOException, nb
    {
        int j1 = jb.read();
        switch(j1)
        {
        case 0: // '\0'
        case 1: // '\001'
        case 2: // '\002'
        case 3: // '\003'
        case 4: // '\004'
        case 5: // '\005'
        case 6: // '\006'
        case 7: // '\007'
        case 8: // '\b'
        case 9: // '\t'
        case 10: // '\n'
        case 11: // '\013'
        case 12: // '\f'
        case 13: // '\r'
        case 14: // '\016'
        case 15: // '\017'
        case 26: // '\032'
        case 27: // '\033'
        case 28: // '\034'
        case 29: // '\035'
        case 30: // '\036'
        case 31: // '\037'
        case 32: // ' '
        case 33: // '!'
        case 34: // '"'
        case 35: // '#'
        case 36: // '$'
        case 37: // '%'
        case 38: // '&'
        case 39: // '\''
        case 40: // '('
        case 41: // ')'
        case 42: // '*'
        case 43: // '+'
        case 44: // ','
        case 45: // '-'
        case 46: // '.'
        case 47: // '/'
        case 48: // '0'
        case 49: // '1'
        case 50: // '2'
        case 51: // '3'
        case 52: // '4'
        case 53: // '5'
        case 59: // ';'
        case 60: // '<'
        case 61: // '='
        case 62: // '>'
        case 63: // '?'
        case 64: // '@'
        case 65: // 'A'
        case 66: // 'B'
        case 67: // 'C'
        case 68: // 'D'
        case 69: // 'E'
        case 70: // 'F'
        case 71: // 'G'
        case 72: // 'H'
        case 73: // 'I'
        case 74: // 'J'
        case 75: // 'K'
        case 76: // 'L'
        case 77: // 'M'
        case 78: // 'N'
        case 79: // 'O'
        case 80: // 'P'
        case 81: // 'Q'
        case 82: // 'R'
        case 83: // 'S'
        case 84: // 'T'
        case 85: // 'U'
        case 86: // 'V'
        case 87: // 'W'
        case 88: // 'X'
        case 89: // 'Y'
        case 90: // 'Z'
        case 91: // '['
        case 92: // '\\'
        case 93: // ']'
        case 94: // '^'
        case 95: // '_'
        case 96: // '`'
        case 97: // 'a'
        case 98: // 'b'
        case 99: // 'c'
        case 100: // 'd'
        case 101: // 'e'
        case 102: // 'f'
        case 103: // 'g'
        case 104: // 'h'
        case 105: // 'i'
        case 106: // 'j'
        case 107: // 'k'
        case 108: // 'l'
        case 109: // 'm'
        case 110: // 'n'
        case 111: // 'o'
        case 112: // 'p'
        case 113: // 'q'
        case 114: // 'r'
        case 115: // 's'
        case 116: // 't'
        case 117: // 'u'
        case 118: // 'v'
        case 119: // 'w'
        case 120: // 'x'
        case 121: // 'y'
        case 122: // 'z'
        case 123: // '{'
        case 124: // '|'
        case 125: // '}'
        case 126: // '~'
        case 127: // '\177'
        case 128: 
        case 129: 
        case 130: 
        case 131: 
        case 133: 
        case 134: 
        case 135: 
        case 136: 
        case 137: 
        case 138: 
        case 139: 
        case 140: 
        case 141: 
        case 142: 
        case 143: 
        case 144: 
        case 145: 
        case 146: 
        case 147: 
        case 148: 
        case 149: 
        case 150: 
        case 151: 
        case 152: 
        case 172: 
        case 173: 
        case 174: 
        case 175: 
        case 176: 
        case 177: 
        case 190: 
        case 191: 
        case 194: 
        case 195: 
            return de.n(j1);

        case 17: // '\021'
            return new ee(jb);

        case 16: // '\020'
            return new ld(jb);

        case 188: 
            return new yd(jb);

        case 170: 
            return new sd(jb, i1, qy);

        case 171: 
            return new rd(jb, i1, qy);

        case 196: 
            int k1 = jb.read();
            if(k1 == 132)
                return new ge(jb);
            if(k1 == 169)
                return new he(jb);
            else
                return new fe(k1, jb);

        case 132: 
            return new wd(jb);

        case 21: // '\025'
        case 22: // '\026'
        case 23: // '\027'
        case 24: // '\030'
        case 25: // '\031'
        case 54: // '6'
        case 55: // '7'
        case 56: // '8'
        case 57: // '9'
        case 58: // ':'
            return vd.e(j1, jb.readUnsignedByte());

        case 169: 
            return new xd(jb);

        case 153: 
        case 154: 
        case 155: 
        case 156: 
        case 157: 
        case 158: 
        case 159: 
        case 160: 
        case 161: 
        case 162: 
        case 163: 
        case 164: 
        case 165: 
        case 166: 
        case 198: 
        case 199: 
            return new md(j1, jb, i1, qy);

        case 167: 
            return new nd(jb, i1, qy);

        case 168: 
            return new od(jb, i1, qy);

        case 200: 
        case 201: 
            return new pd(j1, jb, i1, qy);

        case 18: // '\022'
            return new ud(jb, nm);

        case 19: // '\023'
        case 20: // '\024'
        case 178: 
        case 179: 
        case 180: 
        case 181: 
        case 182: 
        case 183: 
        case 184: 
        case 189: 
        case 192: 
        case 193: 
            return new zd(j1, jb, nm);

        case 187: 
            return new ce(jb, nm, i1);

        case 197: 
            return new be(jb, nm);

        case 185: 
            return new ae(jb, nm);

        case 186: 
        default:
            throw new nb(z[1] + j1);
        }
    }

    public int d()
    {
        return 1;
    }

    public int[] d(int i1, int j1)
    {
        int ai[] = new int[1];
        ai[0] = j1;
        return ai;
    }

    public String e()
    {
        return a[d];
    }

    public static final String h(int i1)
    {
        return a[i1];
    }

    public final int f()
    {
        return d;
    }

    public static kd i(int i1)
    {
        Object obj = null;
        switch(i1)
        {
        case 0: // '\0'
            obj = de.n(3);
            break;

        case 1: // '\001'
            obj = de.n(4);
            break;

        case 2: // '\002'
            obj = de.n(5);
            break;

        case 3: // '\003'
            obj = de.n(6);
            break;

        case 4: // '\004'
            obj = de.n(7);
            break;

        case 5: // '\005'
            obj = de.n(8);
            break;

        default:
            if(i1 <= 127)
            {
                obj = new ld(i1);
                break;
            }
            if(i1 <= 32767)
                obj = new ee(i1);
            break;
        }
        return ((kd) (obj));
    }

    public ArrayList g()
    {
        return null;
    }

    public kd h()
    {
        return null;
    }

    public static kd j(int i1)
    {
        Object obj = null;
        if(i1 <= 255)
            obj = new xd(i1);
        else
        if(i1 <= 65535)
            obj = new he(i1);
        return ((kd) (obj));
    }

    public static boolean k(int i1)
    {
        switch(i1)
        {
        case 168: 
        case 201: 
            return true;
        }
        return false;
    }

    public boolean i()
    {
        return false;
    }

    public boolean j()
    {
        return false;
    }

    public boolean k()
    {
        return false;
    }

    public boolean l()
    {
        return false;
    }

    public boolean m()
    {
        return false;
    }

    public boolean n()
    {
        return false;
    }

    public boolean a(sy sy, ly ly, Object obj, int i1)
    {
        return false;
    }

    static String a(String s, String s1)
    {
        int i1 = s.indexOf('%');
        if(i1 != -1)
        {
            String s2 = s.substring(0, i1) + s1 + s.substring(i1 + 1);
            return s2;
        } else
        {
            return s;
        }
    }

    public void m(int i1)
    {
    }

    public abstract boolean o();

    public void a(DataOutputStream dataoutputstream)
        throws IOException
    {
        dataoutputstream.writeByte(d);
    }

    static 
    {
        a = new String[202];
        b = new String[202];
        c = it.n;
a[0]="nop";
a[1]="aconst_null";
a[2]="iconst_m1";
a[3]="iconst_0";
a[4]="iconst_1";
a[5]="iconst_2";
a[6]="iconst_3";
a[7]="iconst_4";
a[8]="iconst_5";
a[9]="lconst_0";
a[10]="lconst_1";
a[11]="fconst_0";
a[12]="fconst_1";
a[13]="fconst_2";
a[14]="dconst_0";
a[15]="dconst_1";
a[16]="bipush";
a[17]="sipush";
a[18]="ldc";
a[19]="ldc_w";
a[20]="ldc2_w";
a[21]="iload";
a[22]="lload";
a[23]="fload";
a[24]="dload";
a[25]="aload";
a[26]="iload_0";
a[27]="iload_1";
a[28]="iload_2";
a[29]="iload_3";
a[30]="lload_0";
a[31]="lload_1";
a[32]="lload_2";
a[33]="lload_3";
a[34]="fload_0";
a[35]="fload_1";
a[36]="fload_2";
a[37]="fload_3";
a[38]="dload_0";
a[39]="dload_1";
a[40]="dload_2";
a[41]="dload_3";
a[42]="aload_0";
a[43]="aload_1";
a[44]="aload_2";
a[45]="aload_3";
a[46]="iaload";
a[47]="laload";
a[48]="faload";
a[49]="daload";
a[50]="aaload";
a[51]="baload";
a[52]="caload";
a[53]="saload";
a[54]="istore";
a[55]="lstore";
a[56]="fstore";
a[57]="dstore";
a[58]="astore";
a[59]="istore_0";
a[60]="istore_1";
a[61]="istore_2";
a[62]="istore_3";
a[63]="lstore_0";
a[64]="lstore_1";
a[65]="lstore_2";
a[66]="lstore_3";
a[67]="fstore_0";
a[68]="fstore_1";
a[69]="fstore_2";
a[70]="fstore_3";
a[71]="dstore_0";
a[72]="dstore_1";
a[73]="dstore_2";
a[74]="dstore_3";
a[75]="astore_0";
a[76]="astore_1";
a[77]="astore_2";
a[78]="astore_3";
a[79]="iastore";
a[80]="lastore";
a[81]="fastore";
a[82]="dastore";
a[83]="aastore";
a[84]="bastore";
a[85]="castore";
a[86]="sastore";
a[87]="pop";
a[88]="pop2";
a[89]="dup";
a[90]="dup_x1";
a[91]="dup_x2";
a[92]="dup2";
a[93]="dup2_x1";
a[94]="dup2_x2";
a[95]="swap";
a[96]="iadd";
a[97]="ladd";
a[98]="fadd";
a[99]="dadd";
a[100]="isub";
a[101]="lsub";
a[102]="fsub";
a[103]="dsub";
a[104]="imul";
a[105]="lmul";
a[106]="fmul";
a[107]="dmul";
a[108]="idiv";
a[109]="ldiv";
a[110]="fdiv";
a[111]="ddiv";
a[112]="irem";
a[113]="lrem";
a[114]="frem";
a[115]="drem";
a[116]="ineg";
a[117]="lneg";
a[118]="fneg";
a[119]="dneg";
a[120]="ishl";
a[121]="lshl";
a[122]="ishr";
a[123]="lshr";
a[124]="iushr";
a[125]="lushr";
a[126]="iand";
a[127]="land";
a[128]="ior";
a[129]="lor";
a[130]="ixor";
a[131]="lxor";
a[132]="iinc";
a[133]="i2l";
a[134]="i2f";
a[135]="i2d";
a[136]="l2i";
a[137]="l2f";
a[138]="l2d";
a[139]="f2i";
a[140]="f2l";
a[141]="f2d";
a[142]="d2i";
a[143]="d2l";
a[144]="d2f";
a[145]="i2b";
a[146]="i2c";
a[147]="i2s";
a[148]="lcmp";
a[149]="fcmpl";
a[150]="fcmpg";
a[151]="dcmpl";
a[152]="dcmpg";
a[153]="ifeq";
a[154]="ifne";
a[155]="iflt";
a[156]="ifge";
a[157]="ifgt";
a[158]="ifle";
a[159]="if_icmpeq";
a[160]="if_icmpne";
a[161]="if_icmplt";
a[162]="if_icmpge";
a[163]="if_icmpgt";
a[164]="if_icmple";
a[165]="if_acmpeq";
a[166]="if_acmpne";
a[167]="goto";
a[168]="jsr";
a[169]="ret";
a[170]="tableswitch";
a[171]="lookupswitch";
a[172]="ireturn";
a[173]="lreturn";
a[174]="freturn";
a[175]="dreturn";
a[176]="areturn";
a[177]="return";
a[178]="getstatic";
a[179]="putstatic";
a[180]="getfield";
a[181]="putfield";
a[182]="invokevirtual";
a[183]="invokespecial";
a[184]="invokestatic";
a[185]="invokeinterface";
a[187]="new";
a[188]="newarray";
a[189]="anewarray";
a[190]="arraylength";
a[191]="athrow";
a[192]="checkcast";
a[193]="instanceof";
a[194]="monitorenter";
a[195]="monitorexit";
a[196]="wide";
a[197]="multianewarray";
a[198]="ifnull";
a[199]="ifnonnull";
a[200]="goto_w";
a[201]="jsr_w";

b[0]="do nothing";
b[1]="push null object reference";
b[2]="push -1 onto stack";
b[3]="push 0 onto stack";
b[4]="push 1 onto stack";
b[5]="push 2 onto stack";
b[6]="push 3 onto stack";
b[7]="push 4 onto stack";
b[8]="push 5 onto stack";
b[9]="push long 0";
b[10]="push long 1";
b[11]="push float 0.0";
b[12]="push float 1.0";
b[13]="push float 2.0";
b[14]="push double 0.0";
b[15]="push double 1.0";
b[16]="push % onto stack";
b[17]="push % onto stack";
b[18]="push % from constant pool";
b[19]="push % from constant pool";
b[20]="push long or double % from constant pool";
b[21]="push int from local%";
b[22]="push long from local%";
b[23]="push float from local%";
b[24]="push double from local%";
b[25]="push reference from local%";
b[26]="push int from local0";
b[27]="push int from local1";
b[28]="push int from local2";
b[29]="push int from local3";
b[30]="push long from local0";
b[31]="push long from local1";
b[32]="push long from local2";
b[33]="push long from local3";
b[34]="push float from local0";
b[35]="push float from local1";
b[36]="push float from local2";
b[37]="push float from local3";
b[38]="push double from local0";
b[39]="push double from local1";
b[40]="push double from local2";
b[41]="push double from local3";
b[42]="push reference from local0";
b[43]="push reference from local1";
b[44]="push reference from local2";
b[45]="push reference from local3";
b[46]="push int from array";
b[47]="push long from array";
b[48]="push float from array";
b[49]="push double from array";
b[50]="push reference from array";
b[51]="push byte or boolean from array";
b[52]="push char from array";
b[53]="push a short from an array";
b[54]="pop int from stack into local%";
b[55]="pop long from stack into local%";
b[56]="pop float into local%";
b[57]="pop double into local%";
b[58]="pop reference into local%";
b[59]="pop int from stack into local0";
b[60]="pop int from stack into local1";
b[61]="pop int from stack into local2";
b[62]="pop int from stack into local3";
b[63]="pop long from stack into local0";
b[64]="pop long from stack into local1";
b[65]="pop long from stack into local2";
b[66]="pop long from stack into local3";
b[67]="pop float into local0";
b[68]="pop float into local1";
b[69]="pop float into local2";
b[70]="pop float into local3";
b[71]="pop double into local0";
b[72]="pop double into local1";
b[73]="pop double into local2";
b[74]="pop double into local3";
b[75]="pop reference into local0";
b[76]="pop reference into local1";
b[77]="pop reference into local2";
b[78]="pop reference into local3";
b[79]="pop into int array";
b[80]="pop into long array";
b[81]="pop into float array";
b[82]="pop into double array";
b[83]="pop reference into array";
b[84]="pop into byte or boolean array";
b[85]="pop into char array";
b[86]="pop a short into an array";
b[87]="pop 1 word";
b[88]="pop 2 words";
b[89]="duplicate top stack word";
b[90]="duplicate top stack word & put 2 down";
b[91]="duplicate top stack word & put 3 down";
b[92]="duplicate top 2 stack words";
b[93]="duplicate top 2 stack words & put 3 down";
b[94]="duplicate top 2 stack words & put 4 down";
b[95]="swap two stack words";
b[96]="add the two ints on the stack";
b[97]="add the two longs on the stack";
b[98]="add the two floats on the stack";
b[99]="add the two doubles on the stack";
b[100]="subtract int at stack top from int below it";
b[101]="subtract long at stack top from long below it";
b[102]="subtract float at stack top from float below it";
b[103]="subtract double at stack top from double below it";
b[104]="multiply two ints";
b[105]="multiply two longs";
b[106]="multiply two floats";
b[107]="multiply two doubles";
b[108]="divide two ints";
b[109]="divide two longs";
b[110]="divide two floats";
b[111]="divide two doubles";
b[112]="push remainder of two ints";
b[113]="push remainder of two longs";
b[114]="push remainder of two floats";
b[115]="push remainder of two doubles";
b[116]="negate an int";
b[117]="negate a long";
b[118]="negate a float";
b[119]="negate a double";
b[120]="shift int1 left by low 5 bits of int2";
b[121]="shift long left by low 5 bits of int";
b[122]="shift int1 right by low 5 bits of int2";
b[123]="shift long right by low 5 bits of int";
b[124]="logical shift int1 right by low 5 bits of int2";
b[125]="logical shift long right by low 5 bits of int";
b[126]="bitwise AND of two ints";
b[127]="bitwise AND of two longs";
b[128]="bitwise OR of two ints";
b[129]="bitwise OR of two longs";
b[130]="bitwise XOR of two ints";
b[131]="bitwise XOR of two longs";
b[132]="increment local% by %";
b[133]="convert int to long";
b[135]="convert int to double";
b[136]="convert long to int";
b[137]="convert long to float";
b[138]="convert long to double";
b[139]="convert float to int";
b[140]="convert float to long";
b[141]="convert float to double";
b[142]="convert double to int";
b[143]="convert double to long";
b[144]="convert double to float";
b[145]="convert int to byte";
b[146]="convert int to char";
b[147]="convert int to short";
b[148]="compare two longs on stack";
b[149]="compare two floats on stack";
b[150]="compare two floats on stack";
b[151]="compare two doubles on stack";
b[152]="compare two doubles on stack";
b[153]="goto % if int == 0";
b[154]="goto % if int != 0";
b[155]="goto % if int < 0";
b[156]="goto % if int >= 0";
b[157]="goto % if int > 0";
b[158]="goto % if int <= 0";
b[159]="goto % if int1 == int2";
b[160]="goto % if int1 != int2";
b[161]="goto % if int1 < int2";
b[162]="goto % if int1 >= int2";
b[163]="goto % if int1 > int2";
b[164]="goto % if int1 <= int2";
b[165]="goto % if ref1 == ref2";
b[166]="goto % if ref1 != ref2";
b[167]="goto %";
b[168]="push address of next opcode then goto %";
b[169]="return from subroutine. Use address in local%";
b[172]="return int";
b[173]="return long";
b[174]="return float";
b[175]="return double";
b[176]="return reference";
b[177]="return void from method";
b[178]="push contents of field %";
b[179]="set field %";
b[180]="push contents of field %";
b[181]="set field %";
b[182]="invoke %";
b[183]="invoke %";
b[184]="invoke %";
b[185]="invoke % with % operands";
b[187]="new %";
b[188]="new array of %";
b[189]="push a reference to a new array of %";
b[190]="push length of array";
b[191]="throw reference currently on stack";
b[192]="cast to %";
b[193]="is objectref of class %?";
b[194]="enter monitor for objectref";
b[195]="exit monitor for objectref";
b[196]="modifies behaviour of next opcode. NB: has 2 formats";
b[197]="new array of % with % dimensions";
b[198]="goto % if objectref == null";
b[199]="goto % if objectref != null";
b[200]="goto %";
b[201]="push address of next opcode then goto %";

    }
}